#include <iostream>
#include <unistd.h>
#include <signal.h>

using namespace std;

void PrintPending(const sigset_t& pending)
{
    for (int signo = 31; signo >= 1; signo--)
    {
        if (sigismember(&pending, signo)){
            cout << 1;
        }
        else{
            cout << 0;
        }
    }
    cout << endl << endl;
}

int main()
{
    sigset_t set, oset;
    sigemptyset(&set);
    sigemptyset(&oset);
    sigaddset(&set, 2);

    sigprocmask(SIG_SETMASK, &set, &oset); // 添加到block表中

    sigset_t pending;
    int cnt = 0;
    while (1)
    {
        sigpending(&pending);
        PrintPending(pending); // 打印pending表
        sleep(1);
        cnt++;
        if (cnt >= 5)
        {
            sigprocmask(SIG_SETMASK, &oset, nullptr);
        }
    }
    return 0;
}